---------------------------------------------------------------------------
-----------------------------BEST GEO_POSITIONING--------------------------
---------------------------------------------------------------------------
---------------------------------------------------------------------------
---------------------------BEST REGIONS BY INDICATORS-----------------------
---------------------------------------------------------------------------
select settore, indicatore, unita_di_misura, territorio, Prediction_2018, rnk
from (Select *,
             case
               when Indicatore <> 'Tasso di disoccupazione'
                 then RANK() over (partition by Indicatore order by Prediction_2018 desc)
               else RANK() over (partition by Indicatore order by Prediction_2018 ) end rnk
      from L2_ISTAT.FACT_ISTAT
     ) t
where rnk < 3
   or rnk > 18
-------------------------------------------------------------------------------------------------
--------------------------------BEST REGIONS--------------------------------
---------------------------------------------------------------------------
select t3.territorio, isnull(t2.c, 0) as #closing_shop,
       isnull(t4.c, 0) as #opening_shop,
       sum(t3.rank1) Istat_rank,
       sum(t3.rank1 + isnull(t2.c, 0)+ isnull(t4.c, 0)) as Final_Rank
from (select t.Territorio, sum(t.rnk) rank1
      from (Select *,
                   case
                     when FACT_ISTAT.Indicatore <> 'Tasso di disoccupazione'
                       then RANK() over (partition by FACT_ISTAT.Indicatore order by FACT_ISTAT.Prediction_2018 desc)
                     else RANK() over (partition by FACT_ISTAT.Indicatore order by FACT_ISTAT.Prediction_2018 ) end rnk
            from L2_ISTAT.FACT_ISTAT
           ) t
      Group by t.Territorio) t3
      left join
     (Select DIM_LOCATION_SS.regione, COUNT(DISTINCT DIM_SHOP_SS._negozio_desc_) as c
      From L2_STAR_SCHEMA.DIM_SHOP_SS,
           L2_STAR_SCHEMA.DIM_LOCATION_SS
      where L2_STAR_SCHEMA.DIM_SHOP_SS._NEGOZIO_DESC_ like '%/*%' escape '/'
        and L2_STAR_SCHEMA.DIM_SHOP_SS._COMUNE_SK = L2_STAR_SCHEMA.DIM_LOCATION_SS._COMUNE_SK
      group by DIM_LOCATION_SS.regione) as t2
      on t3.Territorio = t2.regione
      left join
     (Select DIM_LOCATION_SS.regione, COUNT(DISTINCT DIM_SHOP_SS._negozio_desc_) as c
      From L2_STAR_SCHEMA.DIM_SHOP_SS,
           L2_STAR_SCHEMA.DIM_LOCATION_SS
      where L2_STAR_SCHEMA.DIM_SHOP_SS._NEGOZIO_DESC_ not like '%/*%' escape '/'
        and L2_STAR_SCHEMA.DIM_SHOP_SS._COMUNE_SK = L2_STAR_SCHEMA.DIM_LOCATION_SS._COMUNE_SK
      group by DIM_LOCATION_SS.regione) as t4
      on t4.regione = t2.regione
Group by t3.Territorio, t2.c, t4.c
order by Final_Rank;
-----------------------------------------------------
---------------BEST CITIES FROM BEST REGION BY ARRIVI/RESIDENTI------------
---------------------------------------------------------------------------
select t.comune,t.num_residenti,t2.Totale_esercizi_Arrivi_2018,t2.Totale_esercizi_Arrivi_2018/t.num_residenti measure
from (select *,  RANK() over ( order by num_residenti )  rnk
      from L2_ISTAT.DIM_LOCATION_ISTAT
      Where L2_ISTAT.DIM_LOCATION_ISTAT.regione in ('TRENTINO ALTO ADIGE', 'EMILIA ROMAGNA')
      or L2_ISTAT.DIM_LOCATION_ISTAT.regione like '%AOSTA%') as t,L2_ISTAT.DIM_LOCATION_ISTAT,
      (select *,  RANK() over ( order by Totale_esercizi_Arrivi_2018 )  rnk2
      from L2_ISTAT.DIM_TURISMO_ISTAT) as t2
Where t._COMUNE_SK=t2._COMUNE_SK
group by t.num_residenti, t.comune,rnk,t2.Totale_esercizi_Arrivi_2018
order by measure desc;